package algorithm;

import java.util.ArrayList;

/**
 * create by yongli on 2021-03-03 23:38
 * 用数组来表示数组，还不是那么好理解的
 * 作为一个链表，只有拿到头结点
 * 头结点可存元素，可不存，
 */

public  class  ArrToLink<T> {

    private static final int N = 10010;
    // 存储元素，存储元素下标，限定元素为整数，局限很大，还是使用对象
    // 并且在创建数组对象时,并没有分配空间,在使用时在创建对象
    //    private static int[] e =new int[N];
    private  Object[] e = new Object[N];
    private static int[] ne = new int[N];
    private static int ptr = -1;

    // 说明head要么指向元素，要不不止
    private static int head = -1;
    private static int idx = 0;

    public static void main(String[] args) {
        ArrToLink<Integer> arr= new ArrToLink<>();

        arr.insertFirst(122);
        arr.insertFirst(12322);
        System.out.println(head);
        Integer el;
        while ((el=arr.next())!= null){
            System.out.println(el);
        }
    }

    public  T next() {
        if(ptr !=-1){
            return (T)e[ptr--];
        }
        return null;
    }

    public void insertFirst(T el){
        e[idx] = el;
        ptr = idx;
        head = idx;
        idx++;
    }

    public void remove(){
        if(head!=-1){
            // 把原来的head取代了
            head = ne[head];
        }
    }



}

